<?php

/**
 * @author Nick Swartelé
 * @todo: Afgewerkt.
 * Dit is de Applicatie klasse: Persoonsgegevens.
 * 
 * Deze klasse maakt het aanmaken van een nieuwe persoon, bewerken en deleten mogelijk. Ook kun je hiermee een overzicht opvragen van je eigen gegevens en een overzicht van alle personen.
 */
require_once 'defs/Constants.php';
require_once FILE_DB_PERSOONSGEGEVENS;
require_once FILE_DB_CONTROLE;

class Persoonsgegevens {

    private $controle = '';
    private $leiding = '';
    private $registratienummer = '';
    private $gebruikers_id;
    private $functie = '';
    private $email = '';
    private $naam = '';
    private $achternaam = '';
    private $land = '';
    private $stad = '';
    private $straat = '';
    private $tel_landlijn = '';
    private $tel_mobiel = '';
    private $error_count = '';

    //construct
    public function __construct(/* $registratienummer = '' */) {
        $this->controle = new DbControle();
    }

    public function save() {
        $persoonsgeg = new DbPersoonsgegevens();
        $persoonsgeg->save($this->registratienummer, $this->naam, $this->achternaam, $this->functie, $this->email,/* $this->regio_bedrijf, $this->bussines_unit,*/ $this->land, $this->stad, $this->straat,/* $this->huisnummer,*/ $this->tel_landlijn, $this->tel_mobiel, $this->leiding);
    }

    public function update() {
        $persoonsgeg = new DbPersoonsgegevens();
        $persoonsgeg->update($this->gebruikers_id, $this->registratienummer, $this->naam, $this->achternaam, $this->functie, $this->email, $this->land, $this->stad, $this->straat, $this->tel_landlijn, $this->tel_mobiel, $this->leiding);
    }

    public function delete() {
        $persoonsgeg = new DbPersoonsgegevens();
        $persoonsgeg->delete($this->registratienummer);
    }

    public function select() {
        $persoonsgeg = new DbPersoonsgegevens();
        $data_array = $persoonsgeg->selectOverzicht();

        return $data_array;
    }

    public function selectPersonal($gebruikersid) {
                
        if (!empty($gebruikersid)) {
            $persoonsgeg = new DbPersoonsgegevens();
            $data_array = $persoonsgeg->selectOne($gebruikersid);

            return $data_array;
        
        } else {
            throw new Exception(PERSOON_ERROR_INVALIDID);
        }



    }

    public function getAchternaam() {
        return $this->achternaam;
    }
    
    // Deze functie haalt de gegevens op uit de database zodat je kunt bekijken via personen overzicht.
        public function get($id){
        $database = new DbPersoonsgegevens($id);
        return($database->DbPersoonsgegevensData());
    }
    
    //Setters
    public function setLeiding($leiding) {
        if ($this->controle->checkString($leiding, DB_TEXT_LEIDING_MAXIMUM, MINIMUM_ALGEMEEN)) {
            $this->leiding = $leiding;
        } else {
            $this->error_count++;
            echo '<br />';
            echo PERSOON_ERROR_GEENLEIDING;
        }
    }
    
    public function setRegistratienummer($registratienummer) {
        if ($this->controle->checkInt((int)$registratienummer, DB_NUMBER_REGISTRATIE_MAXIMUM, MINIMUM_ALGEMEEN)) {
            $this->registratienummer = $registratienummer;
        } else {
            $this->error_count++;
            echo '<br />';
            echo PERSOON_ERROR_GEENREGNUMMER;
        }
    }
    /*
    public function setGebruikersId($gebruikers_id) {
        if ($this->controle->checkInt((int)$gebruikers_id, 4000000, 1)) {
            $this->gebruikers_id = $gebruikers_id;
        } else {
            echo('Gebruikers_id incorrect!');
            throw Exception(PERSOON_ERROR_GEENREGNUMMER);
        }
    }    
    */
    public function setFunctie($functie) {
        if ($this->controle->checkString($functie, DB_NUMBER_COMON_MAXIMUM, MINIMUM_ALGEMEEN)) {
            $this->functie = $functie;
        } else {
            $this->error_count++;
            echo '<br />';
            echo PERSOON_ERROR_GEENFUNCTIE;
        }
    }

    public function setEmail($email) {
        if ($this->controle->checkString($email, DB_NUMBER_COMON_MAXIMUM, MINIMUM_ALGEMEEN)) {
            $this->email = $email;
        } else {
            $this->error_count++;
            echo '<br />';
            echo PERSOON_ERROR_GEENEMAIL;
        }
    }
/*
    public function setRegioBedrijf($regio_bedrijf) {
        if ($this->controle->checkString($regio_bedrijf, 40, 1)) {
            $this->regio_bedrijf = $regio_bedrijf;
        } else {
            throw new Exception(PERSOON_ERROR_GEENREGIOBEDRIJF);
        }
    }
*/
/*
    public function setBussinessUnit($bussines_unit) {
        if ($this->controle->checkString($bussines_unit, 40, 1)) {
            $this->bussines_unit = $bussines_unit;
        } else {
            throw new Exception(PERSOON_ERROR_GEENBU);
        }
    }
*/
/*
    public function setCluster($cluster) {
        if ($this->controle->checkString($cluster, 40, 1)) {
            $this->cluster = $cluster;
        } else {
            throw new Exception(PERSOON_ERROR_GEENCLUSTER);
        }
    }
*/
    public function setNaam($voornaam) {
        if ($this->controle->checkString($voornaam, DB_NUMBER_COMON_MAXIMUM, MINIMUM_ALGEMEEN)) {
            $this->naam = $voornaam;
        } else {
            $this->error_count++;
            echo '<br />';
            echo PERSOON_ERROR_GEENNAAM;
        }
    }
    
    public function setAchternaam($achternaam) {
        if ($this->controle->checkString($achternaam, DB_NUMBER_COMON_MAXIMUM, DB_TEXT_VOORLETTERS_MINIMUM)) {
            $this->achternaam = $achternaam;
        } else {
            $this->error_count++;
            echo '<br />';
            echo PERSOON_ERROR_GEENACHTERNAAM;
        }
    }

    public function setLand($land) {
        if ($this->controle->checkString($land, DB_NUMBER_COMON_MAXIMUM, MINIMUM_ALGEMEEN)) {
            $this->land = $land;
        } else {
            $this->error_count++;
            echo '<br />';
            echo PERSOON_ERROR_GEENLAND;
        }
    }

    public function setStad($stad) {
        if ($this->controle->checkString($stad, DB_NUMBER_COMON_MAXIMUM, MINIMUM_ALGEMEEN)) {
            $this->stad = $stad;
        } else {
            $this->error_count++;
            echo '<br />';
            echo PERSOON_ERROR_GEENSTAD;
        }
    }

    public function setStraat($straat) {
        if ($this->controle->checkString($straat, DB_NUMBER_COMON_MAXIMUM, MINIMUM_ALGEMEEN)) {
            $this->straat = $straat;
        } else {
            $this->error_count++;
            echo WHITE_SPACE_ENTER;
            echo PERSOON_ERROR_GEENSTRAAT;
        }
    }
 /*
    public function setHuisnummer($huisnummer) {
        if ($this->controle->checkInt($huisnummer, 3, 1)) {
            $this->huisnummer = $huisnummer;
        } else {
            throw new Exception(PERSOON_ERROR_GEENHUISNUMMER);
        }
    }
*/
    public function setTel_Landlijn($tel_landlijn) {
        if ($this->controle->checkString($tel_landlijn, DB_NUMBER_COMON_MAXIMUM, MINIMUM_ALGEMEEN)) {
            $this->tel_landlijn = $tel_landlijn;
        } else {
            $this->error_count++;
            echo WHITE_SPACE_ENTER;
            echo PERSOON_ERROR_GEENLANDLIJN;
        }
    }

    public function setTel_mobiel($tel_mobiel) {
        if ($this->controle->checkString($tel_mobiel, DB_NUMBER_COMON_MAXIMUM, MINIMUM_ALGEMEEN)) {
            $this->tel_mobiel = $tel_mobiel;
        } else {
            $this->error_count++;
            echo WHITE_SPACE_ENTER;
            echo PERSOON_ERROR_GEENMOBIEL;
        }
    }
    
    public function checkError() {
        if($this->error_count != 0) {
            echo '<br />';
            echo 'Er zijn 1 of meerdere fouten gevonden!';
            $color = '#FF7B6B';
        } else {
            echo '<br />';
            echo 'geen fouten';
            echo '<script type="text/javascript">      
            alert(\'Persoon toegevoegd!\');
            window.location = "index.php?page=overzicht_persoon";
            </script>';
            exit;
            $new = new Persoonsgegevens();
            $new->save();
        }
    }

    //Getters
    public function getLeiding() {
        return $this->leiding;
    }

    public function getRegistratienummer() {
        return $this->registratienummer;
    }

    public function getFunctie() {
        return $this->registratienummer;
    }

    public function getEmail() {
        return $this->email;
    }
/*
    public function getRegioBedrijf() {
        return $this->regio_bedrijf;
    }

    public function getBussinesUnit() {
        return $this->bussines_unit;
    }

    public function getCluster() {
        return $this->cluster;
    }
*/
    public function getNaam() {
        return $this->naam;
    }

    public function getLand() {
        return $this->land;
    }

    public function getStad() {
        return $this->stad;
    }

    public function getStraat() {
        return $this->straat;
    }
/*
    public function getHuisnummer() {
        return $this->huisnummer;
    }
*/
    public function getTel_Landlijn() {
        return $this->tel_landlijn;
    }

    public function getTel_Mobiel() {
        return $this->tel_mobiel;
    }

}

//Testklasse
class TestPersoonsgegevens {

    public function TestPersoonsgegevens() {
        try {

            //Test variabelen zetten
            $bussines_unit = PERSOONSGEGEVENS_TEST_BU;
            $cluster = PERSOONSGEGEVENS_TEST_CLUSTER;
            $email = PERSOONSGEGEVENS_TEST_EMAIL;
            $functie = PERSOONSGEGEVENS_TEST_FUNCTIE;
            $huisnummer = PERSOONSGEGEVENS_TEST_HUISNUMMER;
            $land = PERSOONSGEGEVENS_TEST_LAND;
            $leiding = PERSOONSGEGEVENS_TEST_LEIDING;
            $naam = PERSOONSGEGEVENS_TEST_NAAM;
            $regiobedrijf = PERSOONSGEGEVENS_TEST_REGIOBEDRIJF;
            $registratienummer = PERSOONSGEGEVENS_TEST_REGISTRATIENUMMER;
            $stad = PERSOONSGEGEVENS_TEST_STAD;
            $straat = PERSOONSGEGEVENS_TEST_STRAAT;
            $tel_landlijn = PERSOONSGEGEVENS_TEST_TEL_LANDLIJN;
            $tel_mobiel = PERSOONSGEGEVENS_TEST_TEL_MOBIEL;

            //initiatie Persoonsgegevens
            $test = new Persoonsgegevens();

            //Setters test
            $test->setBussinessUnit($bussines_unit);
            $test->setCluster($cluster);
            $test->setEmail($email);
            $test->setFunctie($functie);
            $test->setHuisnummer($huisnummer);
            $test->setLand($land);
            $test->setLeiding($leiding);
            $test->setNaam($naam);
            $test->setRegioBedrijf($regiobedrijf);
            $test->setRegistratienummer($registratienummer);
            $test->setStad($stad);
            $test->setStraat($straat);
            $test->setTel_Landlijn($tel_landlijn);
            $test->setTel_mobiel($tel_mobiel);
            $test->save();

            echo "<pre>";
            $this->test_var_dump($test);
            echo "</pre>";
        }

        //Catch exception
        catch (Exception $e) {
            echo 'Message : ' . $e->getMessage() . '<pre>' . $e->getTraceAsString() . '</pre>';

            $this->test_var_dump($test);
        }
    }

    private function test_var_dump($var) {

        echo "<pre>";
        var_dump($var);
        echo "</pre>";
    }

}

?>
